<!DOCTYPE html>
<html lang="en">
<head>
    
    <meta charset="utf-8">
    <title>_event - Zero Extension框架专用前端文档</title>
    
    <meta name="description" content="前端开发框架，官方地址：http://www.vertx-ui.cn" />
    
        <meta name="keywords" content="zero,zero-extension,vert.x" />
        <meta name="keyword" content="zero,zero-extension,vert.x" />
    
    
    
    <script src="scripts/prettify/prettify.js"></script>
    <script src="scripts/prettify/lang-css.js"></script>
    <!--[if lt IE 9]>
      <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->
    <link type="text/css" rel="stylesheet" href="styles/prettify.css">
    <link type="text/css" rel="stylesheet" href="styles/jsdoc.css">
    <link type="text/css" rel="stylesheet" href="styles/zero.css">
    <script src="scripts/nav.js" defer></script>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>

<input type="checkbox" id="nav-trigger" class="nav-trigger" />
<label for="nav-trigger" class="navicon-button x">
  <div class="navicon"></div>
</label>

<label for="nav-trigger" class="overlay"></label>

<nav >
    
    <input type="text" id="nav-search" placeholder="Search" />
    
    <h2><a href="index.html">Home</a></h2><h2><a href="http://www.vertxai.cn/document/doc-web/index.html" target="_blank" class="menu-item" id="website_link" >「Api」Zero Ai</a></h2><h2><a href="http://www.vertxui.cn/document/doc-web/index.html" target="_blank" class="menu-item" id="website_link" >「Api」Zero Ui</a></h2><h2><a href="http://www.vertxui.cn/document/doc-web-extension/index.html" target="_blank" class="menu-item" id="website_link" >「Api」Zero Ui Extension</a></h2><h2><a href="http://www.vertxui.cn" target="_blank" class="menu-item" id="website_link" >「Home」Zero UI</a></h2><h2><a href="http://www.vertxai.cn" target="_blank" class="menu-item" id="website_link" >「Home」Zero Ai</a></h2><h2><a href="http://www.vertxup.cn" target="_blank" class="menu-item" id="website_link" >「Home」Zero Framework</a></h2><h2><a href="http://www.origin-x.cn" target="_blank" class="menu-item" id="website_link" >「Home」Origin X Engine</a></h2><h3>Classes</h3><ul><li><a href="I.html">I</a><ul class='methods'><li data-type='method'><a href="I.html#.action">action</a></li><li data-type='method'><a href="I.html#.apis">apis</a></li><li data-type='method'><a href="I.html#.app">app</a></li><li data-type='method'><a href="I.html#.application">application</a></li><li data-type='method'><a href="I.html#.attributes">attributes</a></li><li data-type='method'><a href="I.html#.authorize">authorize</a></li><li data-type='method'><a href="I.html#.category">category</a></li><li data-type='method'><a href="I.html#.company">company</a></li><li data-type='method'><a href="I.html#.control">control</a></li><li data-type='method'><a href="I.html#.forest">forest</a></li><li data-type='method'><a href="I.html#.form">form</a></li><li data-type='method'><a href="I.html#.forms">forms</a></li><li data-type='method'><a href="I.html#.inited">inited</a></li><li data-type='method'><a href="I.html#.jobResume">jobResume</a></li><li data-type='method'><a href="I.html#.jobs">jobs</a></li><li data-type='method'><a href="I.html#.jobStart">jobStart</a></li><li data-type='method'><a href="I.html#.jobStop">jobStop</a></li><li data-type='method'><a href="I.html#.lists">lists</a></li><li data-type='method'><a href="I.html#.login">login</a></li><li data-type='method'><a href="I.html#.logout">logout</a></li><li data-type='method'><a href="I.html#.menus">menus</a></li><li data-type='method'><a href="I.html#.mission">mission</a></li><li data-type='method'><a href="I.html#.module">module</a></li><li data-type='method'><a href="I.html#.ops">ops</a></li><li data-type='method'><a href="I.html#.page">page</a></li><li data-type='method'><a href="I.html#.password">password</a></li><li data-type='method'><a href="I.html#.profile">profile</a></li><li data-type='method'><a href="I.html#.relation">relation</a></li><li data-type='method'><a href="I.html#.relationDelete">relationDelete</a></li><li data-type='method'><a href="I.html#.relationSave">relationSave</a></li><li data-type='method'><a href="I.html#.tabular">tabular</a></li><li data-type='method'><a href="I.html#.todo">todo</a></li><li data-type='method'><a href="I.html#.token">token</a></li><li data-type='method'><a href="I.html#.uri">uri</a></li><li data-type='method'><a href="I.html#.user">user</a></li><li data-type='method'><a href="I.html#.visitor">visitor</a></li></ul></li><li><a href="IxDialog.html">IxDialog</a></li><li><a href="IxTab.html">IxTab</a></li><li><a href="Login.html">Login</a></li><li><a href="Op.html">Op</a><ul class='methods'><li data-type='method'><a href="Op.html#.$opLogin">$opLogin</a></li><li data-type='method'><a href="Op.html#.$opLogout">$opLogout</a></li></ul></li><li><a href="X6.html">X6</a></li></ul><h3>Modules</h3><ul><li><a href="module-_channel.html">_channel</a><ul class='methods'><li data-type='method'><a href="module-_channel.html#.yiAssist">yiAssist</a></li><li data-type='method'><a href="module-_channel.html#.yiColumn">yiColumn</a></li><li data-type='method'><a href="module-_channel.html#.yiCompany">yiCompany</a></li><li data-type='method'><a href="module-_channel.html#.yiContainer">yiContainer</a></li><li data-type='method'><a href="module-_channel.html#.yiControl">yiControl</a></li><li data-type='method'><a href="module-_channel.html#.yiModule">yiModule</a></li><li data-type='method'><a href="module-_channel.html#.yiPartForm">yiPartForm</a></li><li data-type='method'><a href="module-_channel.html#.yiStandard">yiStandard</a></li><li data-type='method'><a href="module-_channel.html#.ylCard">ylCard</a></li><li data-type='method'><a href="module-_channel.html#.ylDynamic">ylDynamic</a></li><li data-type='method'><a href="module-_channel.html#.ylTabExtra">ylTabExtra</a></li><li data-type='method'><a href="module-_channel.html#.yoAction">yoAction</a></li><li data-type='method'><a href="module-_channel.html#.yoAmbient">yoAmbient</a></li><li data-type='method'><a href="module-_channel.html#.yoComponent">yoComponent</a></li><li data-type='method'><a href="module-_channel.html#.yoControl">yoControl</a></li><li data-type='method'><a href="module-_channel.html#.yoDynamic">yoDynamic</a></li><li data-type='method'><a href="module-_channel.html#.yoFilter">yoFilter</a></li><li data-type='method'><a href="module-_channel.html#.yoForm">yoForm</a></li><li data-type='method'><a href="module-_channel.html#.yoFormAdd">yoFormAdd</a></li><li data-type='method'><a href="module-_channel.html#.yoFormEdit">yoFormEdit</a></li><li data-type='method'><a href="module-_channel.html#.yoList">yoList</a></li><li data-type='method'><a href="module-_channel.html#.yoListBatch">yoListBatch</a></li><li data-type='method'><a href="module-_channel.html#.yoListExtra">yoListExtra</a></li><li data-type='method'><a href="module-_channel.html#.yoListOpen">yoListOpen</a></li><li data-type='method'><a href="module-_channel.html#.yoListSearch">yoListSearch</a></li><li data-type='method'><a href="module-_channel.html#.yoPolymorphism">yoPolymorphism</a></li><li data-type='method'><a href="module-_channel.html#.yoRender">yoRender</a></li><li data-type='method'><a href="module-_channel.html#.yoTable">yoTable</a></li><li data-type='method'><a href="module-_channel.html#.yoTabPage">yoTabPage</a></li><li data-type='method'><a href="module-_channel.html#.yuRouter">yuRouter</a></li></ul></li><li><a href="module-_constant.html">_constant</a><ul class='members'><li data-type='member'><a href="module-_constant.html#.Mode">Mode</a></li><li data-type='member'><a href="module-_constant.html#.Opt">Opt</a></li><li data-type='member'><a href="module-_constant.html#.V">V</a></li></ul></li><li><a href="module-_event.html">_event</a><ul class='methods'><li data-type='method'><a href="module-_event.html#.*fabricAnalyzer">*fabricAnalyzer</a></li><li data-type='method'><a href="module-_event.html#.etParallel">etParallel</a></li><li data-type='method'><a href="module-_event.html#.etPure">etPure</a></li><li data-type='method'><a href="module-_event.html#.etSequence">etSequence</a></li><li data-type='method'><a href="module-_event.html#.etUniform">etUniform</a></li></ul></li><li><a href="module-_function.html">_function</a><ul class='methods'><li data-type='method'><a href="module-_function.html#.mapAsyncDatum">mapAsyncDatum</a></li><li data-type='method'><a href="module-_function.html#.mapButtons">mapButtons</a></li><li data-type='method'><a href="module-_function.html#.mapFun">mapFun</a></li><li data-type='method'><a href="module-_function.html#.mapMeta">mapMeta</a></li><li data-type='method'><a href="module-_function.html#.mapUri">mapUri</a></li><li data-type='method'><a href="module-_function.html#.onApp">onApp</a></li><li data-type='method'><a href="module-_function.html#.onOp">onOp</a></li><li data-type='method'><a href="module-_function.html#.onRelation">onRelation</a></li><li data-type='method'><a href="module-_function.html#.onRelationIdentifiers">onRelationIdentifiers</a></li><li data-type='method'><a href="module-_function.html#.onRelationType">onRelationType</a></li><li data-type='method'><a href="module-_function.html#.onTree">onTree</a></li><li data-type='method'><a href="module-_function.html#.toArray">toArray</a></li><li data-type='method'><a href="module-_function.html#.toColor">toColor</a></li><li data-type='method'><a href="module-_function.html#.toDialog">toDialog</a></li><li data-type='method'><a href="module-_function.html#.toIdentifier">toIdentifier</a></li><li data-type='method'><a href="module-_function.html#.toModelId">toModelId</a></li><li data-type='method'><a href="module-_function.html#.toNamespace">toNamespace</a></li><li data-type='method'><a href="module-_function.html#.toUri">toUri</a></li><li data-type='method'><a href="module-_function.html#.upCondition">upCondition</a></li><li data-type='method'><a href="module-_function.html#.upList">upList</a></li><li data-type='method'><a href="module-_function.html#.upLoading">upLoading</a></li><li data-type='method'><a href="module-_function.html#.upQuery">upQuery</a></li><li data-type='method'><a href="module-_function.html#.upValue">upValue</a></li></ul></li><li><a href="module-_kernel.html">_kernel</a><ul class='methods'><li data-type='method'><a href="module-_kernel.html#.authData">authData</a></li><li data-type='method'><a href="module-_kernel.html#.authGroups">authGroups</a></li><li data-type='method'><a href="module-_kernel.html#.authKeySet">authKeySet</a></li><li data-type='method'><a href="module-_kernel.html#.authRequest">authRequest</a></li><li data-type='method'><a href="module-_kernel.html#.authRule">authRule</a></li><li data-type='method'><a href="module-_kernel.html#.authTpl">authTpl</a></li><li data-type='method'><a href="module-_kernel.html#.authTreeRes">authTreeRes</a></li><li data-type='method'><a href="module-_kernel.html#.configClick">configClick</a></li><li data-type='method'><a href="module-_kernel.html#.configColumn">configColumn</a></li><li data-type='method'><a href="module-_kernel.html#.configDialog">configDialog</a></li><li data-type='method'><a href="module-_kernel.html#.configGrid">configGrid</a></li><li data-type='method'><a href="module-_kernel.html#.configRelation">configRelation</a></li><li data-type='method'><a href="module-_kernel.html#.designer">designer</a></li><li data-type='method'><a href="module-_kernel.html#.dialog">dialog</a></li><li data-type='method'><a href="module-_kernel.html#.form">form</a></li><li data-type='method'><a href="module-_kernel.html#.inApi">inApi</a></li><li data-type='method'><a href="module-_kernel.html#.init">init</a></li><li data-type='method'><a href="module-_kernel.html#.inJob">inJob</a></li><li data-type='method'><a href="module-_kernel.html#.outApi">outApi</a></li><li data-type='method'><a href="module-_kernel.html#.outJob">outJob</a></li><li data-type='method'><a href="module-_kernel.html#.parserOfButton">parserOfButton</a></li><li data-type='method'><a href="module-_kernel.html#.parserOfColor">parserOfColor</a></li><li data-type='method'><a href="module-_kernel.html#.sexExAction">sexExAction</a></li><li data-type='method'><a href="module-_kernel.html#.sexExPlugin">sexExPlugin</a></li><li data-type='method'><a href="module-_kernel.html#.uiDialog">uiDialog</a></li><li data-type='method'><a href="module-_kernel.html#.uiTab">uiTab</a></li><li data-type='method'><a href="module-_kernel.html#.xuiContainer">xuiContainer</a></li><li data-type='method'><a href="module-_kernel.html#.xuiDecorator">xuiDecorator</a></li><li data-type='method'><a href="module-_kernel.html#.xuiGrid">xuiGrid</a></li></ul></li><li><a href="module-_rx.html">_rx</a><ul class='methods'><li data-type='method'><a href="module-_rx.html#.rsDirty">rsDirty</a></li><li data-type='method'><a href="module-_rx.html#.rsLoading">rsLoading</a></li><li data-type='method'><a href="module-_rx.html#.rsOpened">rsOpened</a></li><li data-type='method'><a href="module-_rx.html#.rsSubmitting">rsSubmitting</a></li><li data-type='method'><a href="module-_rx.html#.rsVisible">rsVisible</a></li><li data-type='method'><a href="module-_rx.html#.rx">rx</a></li><li data-type='method'><a href="module-_rx.html#.rxAssist">rxAssist</a></li><li data-type='method'><a href="module-_rx.html#.rxBatchDelete">rxBatchDelete</a></li><li data-type='method'><a href="module-_rx.html#.rxBatchEdit">rxBatchEdit</a></li><li data-type='method'><a href="module-_rx.html#.rxChannel">rxChannel</a></li><li data-type='method'><a href="module-_rx.html#.rxColumn">rxColumn</a></li><li data-type='method'><a href="module-_rx.html#.rxColumnMy">rxColumnMy</a></li><li data-type='method'><a href="module-_rx.html#.rxColumnSave">rxColumnSave</a></li><li data-type='method'><a href="module-_rx.html#.rxCondition">rxCondition</a></li><li data-type='method'><a href="module-_rx.html#.rxDelete">rxDelete</a></li><li data-type='method'><a href="module-_rx.html#.rxDirty">rxDirty</a></li><li data-type='method'><a href="module-_rx.html#.rxExport">rxExport</a></li><li data-type='method'><a href="module-_rx.html#.rxFilter">rxFilter</a></li><li data-type='method'><a href="module-_rx.html#.rxImport">rxImport</a></li><li data-type='method'><a href="module-_rx.html#.rxLoading">rxLoading</a></li><li data-type='method'><a href="module-_rx.html#.rxPostClose">rxPostClose</a></li><li data-type='method'><a href="module-_rx.html#.rxPostOpen">rxPostOpen</a></li><li data-type='method'><a href="module-_rx.html#.rxProjection">rxProjection</a></li><li data-type='method'><a href="module-_rx.html#.rxSearch">rxSearch</a></li><li data-type='method'><a href="module-_rx.html#.rxSelected">rxSelected</a></li><li data-type='method'><a href="module-_rx.html#.rxSubmitting">rxSubmitting</a></li><li data-type='method'><a href="module-_rx.html#.rxTabAdd">rxTabAdd</a></li><li data-type='method'><a href="module-_rx.html#.rxTabClose">rxTabClose</a></li><li data-type='method'><a href="module-_rx.html#.rxTabEdit">rxTabEdit</a></li><li data-type='method'><a href="module-_rx.html#.rxTabOpen">rxTabOpen</a></li><li data-type='method'><a href="module-_rx.html#.rxView">rxView</a></li></ul></li><li><a href="module-_smart.html">_smart</a><ul class='methods'><li data-type='method'><a href="module-_smart.html#.smartForm">smartForm</a></li><li data-type='method'><a href="module-_smart.html#.smartList">smartList</a></li></ul></li><li><a href="module-web-component.html">web-component</a><ul class='methods'><li data-type='method'><a href="module-web-component.html#.*ExAction">*ExAction</a></li><li data-type='method'><a href="module-web-component.html#.*ExButton">*ExButton</a></li><li data-type='method'><a href="module-web-component.html#.*ExDialog">*ExDialog</a></li><li data-type='method'><a href="module-web-component.html#.*ExEditorBatch">*ExEditorBatch</a></li><li data-type='method'><a href="module-web-component.html#.*ExEditorColumn">*ExEditorColumn</a></li><li data-type='method'><a href="module-web-component.html#.*ExEditorExport">*ExEditorExport</a></li><li data-type='method'><a href="module-web-component.html#.*ExEditorImport">*ExEditorImport</a></li><li data-type='method'><a href="module-web-component.html#.*ExNavigation">*ExNavigation</a></li><li data-type='method'><a href="module-web-component.html#.*ExSearch">*ExSearch</a></li><li data-type='method'><a href="module-web-component.html#.*ExSider">*ExSider</a></li><li data-type='method'><a href="module-web-component.html#.*ExSider">*ExSider</a></li><li data-type='method'><a href="module-web-component.html#.*ExTable">*ExTable</a></li><li data-type='method'><a href="module-web-component.html#.*IxChannel">*IxChannel</a></li><li data-type='method'><a href="module-web-component.html#.*IxDatabase">*IxDatabase</a></li><li data-type='method'><a href="module-web-component.html#.*IxDict">*IxDict</a></li><li data-type='method'><a href="module-web-component.html#.*IxIntegration">*IxIntegration</a></li><li data-type='method'><a href="module-web-component.html#.*IxMapping">*IxMapping</a></li><li data-type='method'><a href="module-web-component.html#.*IxRule">*IxRule</a></li><li data-type='method'><a href="module-web-component.html#.*IxService">*IxService</a></li><li data-type='method'><a href="module-web-component.html#.ExAccount">ExAccount</a></li><li data-type='method'><a href="module-web-component.html#.ExAdmin">ExAdmin</a></li><li data-type='method'><a href="module-web-component.html#.ExAdmin">ExAdmin</a></li><li data-type='method'><a href="module-web-component.html#.ExApps">ExApps</a></li><li data-type='method'><a href="module-web-component.html#.ExArbor">ExArbor</a></li><li data-type='method'><a href="module-web-component.html#.ExCategory">ExCategory</a></li><li data-type='method'><a href="module-web-component.html#.ExDeploy">ExDeploy</a></li><li data-type='method'><a href="module-web-component.html#.ExEntry">ExEntry</a></li><li data-type='method'><a href="module-web-component.html#.ExForm">ExForm</a></li><li data-type='method'><a href="module-web-component.html#.ExGraphicEditor">ExGraphicEditor</a></li><li data-type='method'><a href="module-web-component.html#.ExGraphicViewer">ExGraphicViewer</a></li><li data-type='method'><a href="module-web-component.html#.ExHistory">ExHistory</a></li><li data-type='method'><a href="module-web-component.html#.ExListComplex">ExListComplex</a></li><li data-type='method'><a href="module-web-component.html#.ExListOpen">ExListOpen</a></li><li data-type='method'><a href="module-web-component.html#.ExListQuery">ExListQuery</a></li><li data-type='method'><a href="module-web-component.html#.ExLogged">ExLogged</a></li><li data-type='method'><a href="module-web-component.html#.ExLogged">ExLogged</a></li><li data-type='method'><a href="module-web-component.html#.ExLogin">ExLogin</a></li><li data-type='method'><a href="module-web-component.html#.ExRecord">ExRecord</a></li><li data-type='method'><a href="module-web-component.html#.ExRegiment">ExRegiment</a></li><li data-type='method'><a href="module-web-component.html#.ExRelation">ExRelation</a></li><li data-type='method'><a href="module-web-component.html#.ExService">ExService</a></li><li data-type='method'><a href="module-web-component.html#.ExSubmit">ExSubmit</a></li><li data-type='method'><a href="module-web-component.html#.ExTab">ExTab</a></li><li data-type='method'><a href="module-web-component.html#.ExTabular">ExTabular</a></li><li data-type='method'><a href="module-web-component.html#.ExTrackField">ExTrackField</a></li><li data-type='method'><a href="module-web-component.html#.ExWizard">ExWizard</a></li><li data-type='method'><a href="module-web-component.html#.OxAnchor">OxAnchor</a></li><li data-type='method'><a href="module-web-component.html#.OxCard">OxCard</a></li><li data-type='method'><a href="module-web-component.html#.OxCategory">OxCategory</a></li><li data-type='method'><a href="module-web-component.html#.OxCi">OxCi</a></li><li data-type='method'><a href="module-web-component.html#.OxForm">OxForm</a></li><li data-type='method'><a href="module-web-component.html#.OxHistory">OxHistory</a></li><li data-type='method'><a href="module-web-component.html#.OxList">OxList</a></li><li data-type='method'><a href="module-web-component.html#.OxModule">OxModule</a></li><li data-type='method'><a href="module-web-component.html#.OxRelation">OxRelation</a></li><li data-type='method'><a href="module-web-component.html#.OxTab">OxTab</a></li><li data-type='method'><a href="module-web-component.html#.OxTopology">OxTopology</a></li></ul></li></ul><h3>Global</h3><ul><li><a href="global.html#@ox">@ox</a></li></ul>
</nav>

<div id="main">
    
    <h1 class="page-title">_event</h1>
    

    




<section>

<header>
    
        
            
        
    
</header>

<article>
    
        <div class="container-overview">
        
            
                <div class="description usertext"><h2>Fabric引擎</h2>
<p>前端事件生成和调度专用。</p>
<h3>1. DataEvent核心数据结构</h3>
<p>Fabric引擎中的核心数据结构是DataEvent，结构参考代码。</p>
<h3>2. 事件配置案例</h3>
<pre class="prettyprint source lang-json"><code>{
     &quot;event&quot;: {
         &quot;onSelect&quot;: {
             &quot;IDENTIFIER&quot;: {
                 &quot;target&quot;: &quot;73ac2517-15f9-42be-b187-e571af54ede9&quot;,
                 &quot;fabric&quot;: [
                     &quot;TREE_SELECT,CURRENT&quot;,
                     &quot;UNIQUE,LITERAL&quot;,
                     &quot;FILTER,EQ,key&quot;,
                     &quot;UNIQUE,data.identifier&quot;
                 ]
             },
             &quot;RECORD&quot;: {
                 &quot;target&quot;: &quot;73ac2517-15f9-42be-b187-e571af54ede9&quot;,
                 &quot;fabric&quot;: [
                     &quot;TREE_SELECT,PARENT_ALL_INCLUDE&quot;,
                     &quot;ZIP,INDEX_TO,0=categoryFirst`1=categorySecond`2=categoryThird&quot;
                 ]
             },
             &quot;QUERY&quot;: {
                 &quot;target&quot;: &quot;73ac2517-15f9-42be-b187-e571af54ede9&quot;,
                 &quot;fabric&quot;: [
                     &quot;TREE_SELECT,PARENT_ALL_INCLUDE&quot;,
                     &quot;ZIP,INDEX_TO,0=categoryFirst`1=categorySecond`2=categoryThird&quot;
                 ]
             }
         }
     }
}
</code></pre>
<p>上述配置中，会生成<code>onSelect</code>事件函数，且这个时间函数会触发三个Fabric</p>
<ol>
<li>IDENTIFIER</li>
<li>RECORD</li>
<li>QUERY</li>
</ol>
<p>这三个Fabric的作用组件都为<code>73ac2517-15f9-42be-b187-e571af54ede9</code>，这是一个并行事件触发。</p></div>
            

            
                




<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    
</dl>
































            
        
        </div>
    

    

    

    
    
    

     

    

    

    
        <h3 class="subsection-title">Methods</h3>

        
            

    

    <h4 class="name" id=".*fabricAnalyzer"><span class="type-signature">(static) </span>*fabricAnalyzer<span class="signature">(fabric)</span><span class="type-signature"> &rarr; {function}</span></h4>

    




<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    
</dl>





<div class="description usertext">
    <h2>「私有」<code>fabricAnalyzer</code></h2>
<h3>1.基础介绍</h3>
<p>Fabric核心分析函数，整个事件引擎最核心的函数，最终生成：</p>
<pre class="prettyprint source lang-js"><code>// 生成二阶函数
(dataEvent) => async () => {
    // 该二阶函数是 async 的 Promise&lt;*> 返回
    // dataEvent的类型就是核心数据结构 DataEvent
}
</code></pre>
<h3>2.函数链</h3>
<p>整个Fabric引擎都是<code>DataEvent -&gt; DataEvent -&gt; DataEvent -&gt; ...</code>的异步Monad结构，函数链分两层</p>
<ol>
<li>behavior：触发行为</li>
<li>processor：执行细节</li>
</ol>
<h4>2.1.behavior输入</h4>
<table>
<thead>
<tr>
<th style="text-align:left">名称</th>
<th style="text-align:left">构造变量</th>
<th style="text-align:left">含义</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">IDENTIFIER</td>
<td style="text-align:left">$identifier</td>
<td style="text-align:left">使用模型统一标识符identifier构造初始状态。</td>
</tr>
<tr>
<td style="text-align:left">QUERY</td>
<td style="text-align:left">$filters</td>
<td style="text-align:left">使用condition构造初始状态。</td>
</tr>
<tr>
<td style="text-align:left">RECORD</td>
<td style="text-align:left">$record</td>
<td style="text-align:left">使用normalized构造初始状态，构造记录信息。</td>
</tr>
<tr>
<td style="text-align:left">DIALOG</td>
<td style="text-align:left">$dialog</td>
<td style="text-align:left">使用配置构造弹出框的初始状态。</td>
</tr>
</tbody>
</table>
<h4>2.2.processor位置</h4>
<table>
<thead>
<tr>
<th style="text-align:left">节点位置</th>
<th style="text-align:left">输入</th>
<th style="text-align:left">输出</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">开始节点</td>
<td style="text-align:left">任意（Any）</td>
<td style="text-align:left">DataEvent</td>
</tr>
<tr>
<td style="text-align:left">中间节点</td>
<td style="text-align:left">DataEvent</td>
<td style="text-align:left">DataEvent</td>
</tr>
<tr>
<td style="text-align:left">结束节点</td>
<td style="text-align:left">DataEvent</td>
<td style="text-align:left">state</td>
</tr>
</tbody>
</table>
<p>processor都是「2阶」函数，它用于构造不同的「1阶」（DataEvent -&gt; DataEvent），所有一阶函数都是DataEvent作为输入和输出。</p>
<h4>2.3.processor执行</h4>
<table>
<thead>
<tr>
<th style="text-align:left">主名称</th>
<th style="text-align:left">二级</th>
<th style="text-align:left">节点位置</th>
<th style="text-align:left">含义</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">INPUT</td>
<td style="text-align:left">PROP</td>
<td style="text-align:left">开始</td>
<td style="text-align:left">根据参数查找属性中的某个变量信息，可支持<code>field.field1</code>的字段结构。</td>
</tr>
<tr>
<td style="text-align:left">TREE_SELECT</td>
<td style="text-align:left">PARENT_ALL_INCLUDE</td>
<td style="text-align:left">「祖+父+自」根据传入主键，选中对应的树节点构造新的选中集。</td>
<td style="text-align:left"></td>
</tr>
<tr>
<td style="text-align:left">TREE_SELECT</td>
<td style="text-align:left">PARENT_ALL</td>
<td style="text-align:left">「祖+父」根据传入主键，选中对应的树节点构造新的选中集。</td>
<td style="text-align:left"></td>
</tr>
<tr>
<td style="text-align:left">TREE_SELECT</td>
<td style="text-align:left">PARENT</td>
<td style="text-align:left">「祖」根据传入主键，选中对应的树节点构造新的选中集。</td>
<td style="text-align:left"></td>
</tr>
<tr>
<td style="text-align:left">TREE_SELECT</td>
<td style="text-align:left">CURRENT</td>
<td style="text-align:left">「自」（默认）根据传入主键，选中对应的树节点构造新的选中集。</td>
<td style="text-align:left"></td>
</tr>
<tr>
<td style="text-align:left">TREE_SELECT</td>
<td style="text-align:left">CHILDREN</td>
<td style="text-align:left">「子」根据传入主键，选中对应的树节点构造新的选中集。</td>
<td style="text-align:left"></td>
</tr>
<tr>
<td style="text-align:left">TREE_SELECT</td>
<td style="text-align:left">CHILDREN_ALL</td>
<td style="text-align:left">「子+孙」根据传入主键，选中对应的树节点构造新的选中集。</td>
<td style="text-align:left"></td>
</tr>
<tr>
<td style="text-align:left">TREE_SELECT</td>
<td style="text-align:left">CHILDREN_ALL_INCLUDE</td>
<td style="text-align:left">「子+孙+自」根据传入主键，选中对应的树节点构造新的选中集。</td>
<td style="text-align:left"></td>
</tr>
<tr>
<td style="text-align:left">UNIQUE</td>
<td style="text-align:left">LITERAL</td>
<td style="text-align:left">读取Array数据，将Array转换成唯一数据，直接读取数组中的第一个元素。</td>
<td style="text-align:left"></td>
</tr>
<tr>
<td style="text-align:left">UNIQUE</td>
<td style="text-align:left"><code>__DEFAULT__</code></td>
<td style="text-align:left">（默认值），读取唯一数据信息。</td>
<td style="text-align:left"></td>
</tr>
<tr>
<td style="text-align:left">FILTER</td>
<td style="text-align:left">EQ</td>
<td style="text-align:left">过滤专用，构造等于过滤，返回boolean。</td>
<td style="text-align:left"></td>
</tr>
<tr>
<td style="text-align:left">FILTER</td>
<td style="text-align:left">IN</td>
<td style="text-align:left">过滤条件，构造包含过滤，返回boolean。</td>
<td style="text-align:left"></td>
</tr>
<tr>
<td style="text-align:left">CRITERIA</td>
<td style="text-align:left">IN</td>
<td style="text-align:left">构造包含条件，<code>field,i</code>的包含Qr条件。</td>
<td style="text-align:left"></td>
</tr>
<tr>
<td style="text-align:left">MAP</td>
<td style="text-align:left"><code>__DEFAULT__</code></td>
<td style="text-align:left">将一个Array拉平，针对拉平结果从元素中提取字段信息，支持<code>field.field1</code>的字段结构。</td>
<td style="text-align:left"></td>
</tr>
<tr>
<td style="text-align:left">ZIP</td>
<td style="text-align:left">INDEX_TO</td>
<td style="text-align:left">根据表达式计算表达式中的索引处理，数组协变步骤。</td>
<td style="text-align:left"></td>
</tr>
<tr>
<td style="text-align:left">FIELD</td>
<td style="text-align:left"><code>__DEFAULT__</code></td>
<td style="text-align:left">字段名称提取，根据值提取字段。</td>
<td style="text-align:left"></td>
</tr>
<tr>
<td style="text-align:left">DATUM</td>
<td style="text-align:left"><code>__DEFAULT__</code></td>
<td style="text-align:left">内部调用<code>Ux.elementUniqueDatum</code>查找字典中的唯一数据集。</td>
<td style="text-align:left"></td>
</tr>
<tr>
<td style="text-align:left">DIALOG</td>
<td style="text-align:left">VISIBLE</td>
<td style="text-align:left">设置当前状态<code>$visible</code>为true，并设置当前窗口配置存储到$current中。</td>
<td style="text-align:left"></td>
</tr>
</tbody>
</table>
<h3>3.特殊行为</h3>
<h4>3.1.<code>INDEX_TO</code>的特殊结构说明：</h4>
<pre class="prettyprint source lang-shell"><code>// 如下边表达：
ZIP,INDEX_TO,0=categoryFirst`1=categorySecond`2=categoryThird

// 输入：
[&quot;A&quot;,&quot;B&quot;,&quot;C&quot;]

// 输出：
{
    &quot;categoryFirst&quot;: &quot;A&quot;,
    &quot;categorySecond&quot;: &quot;B&quot;,
    &quot;categoryThird&quot;: &quot;C&quot;
}
</code></pre>
</div>











    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        

        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>fabric</code></td>
            

            <td class="type">
            
            </td>

            

            

            <td class="description last"></td>
        </tr>

    
    </tbody>
</table>
















<h5>Returns:</h5>

        


<dl class="param-type">
    <dt>
        Type
    </dt>
    <dd>
        
<span class="param-type">function</span>


    </dd>
</dl>

    



        
            

    

    <h4 class="name" id=".etParallel"><span class="type-signature">(async, static) </span>etParallel<span class="signature">(reference, event)</span><span class="type-signature"> &rarr; {Promise.&lt;T>}</span></h4>

    




<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    
</dl>





<div class="description usertext">
    <h2>「Monad」<code>Ex.etParallel</code></h2>
<p>传入<code>event</code>是并行事件队列，每个队列中包含不同的 fabric 以及对应被影响的 target 组件信息，每个
处理都是执行的 <code>DataEvent</code>。</p>
<pre class="prettyprint source lang-shell"><code>-> Start -> DataEvent
         -> DataEvent
         -> DataEvent
</code></pre>
<p>所有的 <code>DataEvent</code> 之间互不影响，会并行执行。</p>
</div>











    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        

        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>reference</code></td>
            

            <td class="type">
            
                
<span class="param-type">Object</span>
|

<span class="param-type">ReactComponent</span>


            
            </td>

            

            

            <td class="description last"><p>React对应组件引用。</p></td>
        </tr>

    

        <tr>
            
                <td class="name"><code>event</code></td>
            

            <td class="type">
            
                
<span class="param-type">Object</span>


            
            </td>

            

            

            <td class="description last"><p>并行事件配置</p></td>
        </tr>

    
    </tbody>
</table>
















<h5>Returns:</h5>

        
<div class="param-desc">
    <p>返回最终的 Promise</p>
</div>



<dl class="param-type">
    <dt>
        Type
    </dt>
    <dd>
        
<span class="param-type">Promise.&lt;T></span>


    </dd>
</dl>

    



        
            

    

    <h4 class="name" id=".etPure"><span class="type-signature">(async, static) </span>etPure<span class="signature">(reference, fabric)</span><span class="type-signature"> &rarr; {Promise.&lt;T>}</span></h4>

    




<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    
</dl>





<div class="description usertext">
    <h2>「Monad」<code>Ex.etPure</code></h2>
<p>生成带<code>DataEvent</code>参数的专用函数，事件处理专用，处理纯事件执行，使用内置事件名称：</p>
<ul>
<li>内置事件：<code>FABRIC</code>（纯事件）</li>
</ul>
</div>











    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        

        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>reference</code></td>
            

            <td class="type">
            
                
<span class="param-type">Object</span>
|

<span class="param-type">ReactComponent</span>


            
            </td>

            

            

            <td class="description last"><p>React对应组件引用。</p></td>
        </tr>

    

        <tr>
            
                <td class="name"><code>fabric</code></td>
            

            <td class="type">
            
                
<span class="param-type">Array</span>


            
            </td>

            

            

            <td class="description last"><p>处理 fabric 数组配置。</p></td>
        </tr>

    
    </tbody>
</table>
















<h5>Returns:</h5>

        
<div class="param-desc">
    <p>返回执行的 Promise</p>
</div>



<dl class="param-type">
    <dt>
        Type
    </dt>
    <dd>
        
<span class="param-type">Promise.&lt;T></span>


    </dd>
</dl>

    



        
            

    

    <h4 class="name" id=".etSequence"><span class="type-signature">(async, static) </span>etSequence<span class="signature">(reference, event)</span><span class="type-signature"> &rarr; {Promise.&lt;T>}</span></h4>

    




<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    
</dl>





<div class="description usertext">
    <h2>「Monad」<code>Ex.etSequence</code></h2>
<p>传入<code>event</code>中的事件队列配置，事件队列中的每一个元素可以生成对应的<code>DataEvent</code>，而且按
顺序执行：</p>
<pre class="prettyprint source lang-shell"><code>DataEvent -> DataEvent -> DataEvent -> ...
</code></pre>
<p>整个<code>DataEvent</code>会按照事件队列依次执行。</p>
</div>











    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        

        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>reference</code></td>
            

            <td class="type">
            
                
<span class="param-type">Object</span>
|

<span class="param-type">ReactComponent</span>


            
            </td>

            

            

            <td class="description last"><p>React对应组件引用。</p></td>
        </tr>

    

        <tr>
            
                <td class="name"><code>event</code></td>
            

            <td class="type">
            
                
<span class="param-type">Array</span>


            
            </td>

            

            

            <td class="description last"><p>事件队列</p></td>
        </tr>

    
    </tbody>
</table>
















<h5>Returns:</h5>

        
<div class="param-desc">
    <p>返回最终的 Promise</p>
</div>



<dl class="param-type">
    <dt>
        Type
    </dt>
    <dd>
        
<span class="param-type">Promise.&lt;T></span>


    </dd>
</dl>

    



        
            

    

    <h4 class="name" id=".etUniform"><span class="type-signature">(async, static) </span>etUniform<span class="signature">(reference, event)</span><span class="type-signature"> &rarr; {Promise.&lt;T>}</span></h4>

    




<dl class="details">

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    
</dl>





<div class="description usertext">
    <h2>「Monad」<code>Ex.etUniform</code></h2>
<p>event的触发流程：</p>
<ul>
<li>如果event是一个Array，则顺序执行。</li>
<li>如果event是一个Object，则并行执行。</li>
</ul>
<p>统一事件调度专用。</p>
</div>











    <h5>Parameters:</h5>
    

<table class="params">
    <thead>
    <tr>
        
        <th>Name</th>
        

        <th>Type</th>

        

        

        <th class="last">Description</th>
    </tr>
    </thead>

    <tbody>
    

        <tr>
            
                <td class="name"><code>reference</code></td>
            

            <td class="type">
            
                
<span class="param-type">Object</span>
|

<span class="param-type">ReactComponent</span>


            
            </td>

            

            

            <td class="description last"><p>React对应组件引用。</p></td>
        </tr>

    

        <tr>
            
                <td class="name"><code>event</code></td>
            

            <td class="type">
            
                
<span class="param-type">Array</span>
|

<span class="param-type">Object</span>


            
            </td>

            

            

            <td class="description last"><p>根据事件传入数据结构判断哪一种执行方式。</p></td>
        </tr>

    
    </tbody>
</table>
















<h5>Returns:</h5>

        
<div class="param-desc">
    <p>返回执行的 Promise</p>
</div>



<dl class="param-type">
    <dt>
        Type
    </dt>
    <dd>
        
<span class="param-type">Promise.&lt;T></span>


    </dd>
</dl>

    



        
    

    

    
</article>

</section>




    
    
</div>

<br class="clear">

<footer>
    Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.6.6</a> on Fri Apr 15 2022 15:55:10 GMT+0800 (China Standard Time) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
</footer>

<script>prettyPrint();</script>
<script src="scripts/polyfill.js"></script>
<script src="scripts/linenumber.js"></script>

<script src="scripts/search.js" defer></script>



</body>
</html>